package com.lingxu.module.homeIndex.mapper;

import com.lingxu.module.homeIndex.entity.ModelData;
import com.lingxu.module.homeIndex.entity.ModelIDS;
import com.lingxu.module.homeIndex.entity.NumTypeVO;
import com.lingxu.module.homeIndex.entity.ParamsDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Title: HomeIndexMapper
 * @Package: com.lingxu.module.homeIndex.mapper
 * @Author: ysj闫世杰
 * @Email: 1105324813@qq.com
 * @Date: Created in 2023/6/27 11:26
 * @Description: 首页统计
 * @Version: 1.0.0
 */
@Mapper
public interface HomeIndexMapper {

    /**
     * @Author ysj闫世杰
     * @Description 登录总次数
     * @Date 2023/6/27 16:37
     * @Param:
     * @return java.lang.Integer
     **/
    Integer findLoginCount();

    /**
     * @Author ysj闫世杰
     * @Description 模型类型分布
     * @Date 2023/6/27 16:51
     * @Param:
     * @return java.util.List<com.lingxu.module.homeIndex.entity.NumTypeVO>
     **/
    List<NumTypeVO> findModelTypeCount(@Param("dto") ParamsDTO dto);

    /**
     * @Author ysj闫世杰
     * @Description 查询系统使用情况
     * @Date 2023/6/27 17:49
     * @Param:
     * @return java.util.List<com.lingxu.module.homeIndex.entity.NumTypeVO>
     **/
    List<NumTypeVO> findUserAndUseCount();

    //模型排名 按浏览量排序
    List<Map<String, Object>> rankByBrowseTimesPT();
    List<Map<String, Object>> rankByBrowseTimesZF();

    /**
     * @Author ysj闫世杰
     * @Description 按使用量查询模型使用排行
     * @Date 2023/7/27 11:22
     * @Param: dto
     * @return java.util.List<java.util.Map>
     **/
    List<Map> findModelUseLimit(@Param("dto") ParamsDTO dto);

    /**
     * @Author ysj闫世杰
     * @Description 按照问题量查询模型使用情况
     * @Date 2023/7/27 14:07
     * @Param: dto
     * @return java.util.List<java.util.Map>
     **/
    List<Map> findModelProblemLimit(@Param("dto") ParamsDTO dto);

    /**
     * @Author ysj闫世杰
     * @Description 统计数据量
     * @Date 2023/7/27 16:55
     * @Param: dto
     * @return java.util.List<java.util.Map>
     **/
    List<Map> findNumberData(@Param("dto") ParamsDTO dto);

    /**
     * @Author ysj闫世杰
     * @Description 查询部门分布
     * @Date 2023/7/28 9:12
     * @Param: dto
     * @return java.util.List<java.util.Map>
     **/
    List<Map> findDeptCount(@Param("dto") ParamsDTO dto);

    /**
     * @Author ysj闫世杰
     * @Description 问题量统计
     * @Date 2023/7/28 9:19
     * @Param: year
     * @Param: areaCode
     * @return java.util.List<java.util.Map>
     **/
    List<Map> findModelProblemCount(@Param("dto") ParamsDTO dto);

    List<Map> findLoginCountByArea(@Param("dto") ParamsDTO dto);

    //部门登录情况
    List<Map> findLoginByUserDept(@Param("dto") ParamsDTO dto);

    //地图数据量
    List<Map> findDataCountMaps(@Param("dto") ParamsDTO dto);

    Set<ModelIDS> findModelIds();

    ModelData findModelData(@Param("mastermodelid") String mastermodelid, @Param("linkModelIds") List<String> linkModelIds);

    List<Map> findModelCloneLimit(@Param("dto") ParamsDTO dto) throws Exception;

    List<Map> findAreaModelRun(@Param("dto") ParamsDTO dto);

    List<NumTypeVO> findModelTypes(@Param("dto") ParamsDTO dto);

    List<String> findMasterModelId(@Param("type") String type,@Param("dto") ParamsDTO dto);

    List<Map> findResultFeedBack(@Param("list") List<String> masterId);

    List<Map> findModel(@Param("dto") ParamsDTO dto);
}
